查看原文
其他

Android出海实战:Firebase Analytics埋点

互金出海百晓通 郭霖
2024-07-19


/   今日科技快讯   /

近日,司南评测体系OpenCompass选取6个开源模型及OpenAI的GPT-4o开展首个大模型高考“语数外”全卷能力测试。评测采用全国新课标I卷,参与评测的所有开源模型,开源时间均早于高考,确保评测 “闭卷”性。同时,成绩由具有高考评卷经验的教师人工评判,更加接近真实阅卷标准。首个大模型高考全卷评测结果显示,阿里通义千问Qwen2-72B、OpenAI的GPT-4o及书生·浦语2.0文曲星(InternLM2-20B-WQX)成为本次大模型高考的前三甲,对应得分率分别为72.1%、70.5%和70.4%。大部分模型在“语言”本质上的表现良好,语文平均得分率为67%,英语更是达到了81%。而数学则是所有大模型的短板,平均得分率仅为36%;InternLM2-20B-WQX取得了75分的最高分,超过所有受测模型。然而仍未达到及格水平。

/   作者简介   /

本篇文章来自互金出海百晓通的投稿,文章主要分享了应用出海过程中如何使用Firebase Analytics埋点,相信会对大家有所帮助!同时也感谢作者贡献的精彩文章。

原文地址:
https://mp.weixin.qq.com/s/3XwWGL6h8L-r6zpJ_CwTxw

/   前言   /

Google Analytics(分析)for Firebase俗称GA是一款免费的应用效果衡量解决方案,可提供关于应用的使用情况和用户互动度的数据分析。它能帮我们收集访客在我们网站上的访问路径、转化记录、转化金额、访客来源国家等;我们可以通过查看GA平台上预设的报表或者自定义报表来了解整个网站的各项数据,进而优化我们的运营策略。

对于市场投放,也非常依赖我们的Firebase埋点,通过其数据来优化投放方案,优化ROI。

本文将就前后端Firebase Analytics埋点做详细分析,助力出海应用顺利集成Firebase Analytics并对接市场,加速广告推广工作。

/   前端集成Firebase Analytics   /

Firebase Analytics集成

在此,我们依然通过Firebase Android BoM方式添加Analytics引用,如下代码:

 dependencies {
      // firebase BoM
      api platform('com.google.firebase:firebase-bom:28.0.1')
      // firebase FCM推送
      api 'com.google.firebase:firebase-messaging'
      // firebase Analytics
      api 'com.google.firebase:firebase-analytics'    
  }

Android 获取firebaseInstanceId 值,需要将这个值传递给后端(后端埋点需要这个值)。

 class FirebaseManager {
    companion object {
      var firebaseInstanceId = ""

      @SuppressLint("MissingPermission")
      fun init(application: Application) {
        FirebaseAnalytics.getInstance(application).appInstanceId.addOnCompleteListener {
          if (it.result != null) {
            firebaseInstanceId = it.result?:""
          }
        }
      }
    }
  }

Android 客户端埋点上报。

@SuppressLint("MissingPermission")
fun Context?.firebaseTrack(event: String?, params: Map<String?, Any?>? = null) {
    this ?: return
        if (event.isNullOrEmpty()) {
            return
        }
        FirebaseAnalytics.getInstance(this).logEvent(event, Bundle().apply {
            //putString("参数名","参数值") 
            params?.forEach {
            if (it.key.orEmpty().isNotEmpty()) {
                putString(it.key.orEmpty(), it.value.toString().orEmpty())
            }
        }
    })
}

那么,我们如何确定Firebase Analytics集成成功了呢?第一点,我们可以看项目的google_app_id是否正确生成了,如下图:


第二点,我们可以通过Firebase的提供的调试工具及DebugView(调试事件)来看一下。那么,什么是DebugView呢?

Firebase是这样介绍的,使用 DebugView,能够以近乎实时的方式查看由开发设备上的应用记录的原始事件数据。这在开发的插桩 (Instrumentation) 阶段进行验证时很有用,可帮我们发现 Analytics 实现中的错误,还可以帮我们确认所有事件和用户属性已正确记录。

下面,我们来看如何开启DebugView:

1)启用调试模式

Android 设备上启用 Analytics 调试模式,请执行以下命令:
adb shell setprop debug.firebase.analytics.app PACKAGE_NAME

调试模式将保持启用状态,直至您通过执行以下命令明确将其停用:
adb shell setprop debug.firebase.analytics.app .none.

通过以下 adb 命令启用详细日志记录功能
adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

2)打开应用,即可看到该应用的事件记录在 DebugView 报告中


因为Firebase Analytics数据分析面板第二天才会更新数据,我们如何确定我们的埋点是否已经在数据报表呢?Firebase提供了实时数据(Realtime Analytics)给我们,如下图:


到此,Android端的Firebase Analytics集成就结束了。

但对于Firebase Analytics埋点,很多业务重要的埋点是要以后端数据为准的,所以在实际应用中,Firebase Analytics后端埋点相对较多一些。

/   后端埋点   /

准备工作


  1. 在firebase后台获取Android应用ID(这个可以让Android同学提供,在Firebase项目后台和google-services.json文件中都有)
  2. 在firebase后台获取api_secret (在创建完Firebase Analytics账户后才有,也就是要让市场同学创建一下Measurement Protocol API 密钥,在管理 —> 数据流模块)
  3. Android需要把app_instance_id参数设置到请求的公共参数里, 后端可以在注册或者登录接口里进行保存或更新 (后续要使用,在上文有聊到)


后端需要以Firebase Api方式传递数据给Firebase


根据上述信息我们得到后端上报埋点的请求URL为:

https://www.google-analytics.com/mp/collect?firebase_app_id=android应用ID&api_secret=android api_secret

实际样例


上报一般事件:

Request info:
     POST /mp/collect?api_secret=XXXX&firebase_app_id=XXXX
     HOST: www.google-analytics.com
     Content-Type: application/json
     Payload
     {
        "app_instance_id": "xxxxxxxxx",
        "events": [
                {
                    "name": "register_success"
                }
            ]
        }

上报带参数自定义事件(本样例为事件价值事件): 

 Request info:
     POST /mp/collect?api_secret=XXXX&firebase_app_id=XXXX
     HOST: www.google-analytics.com
     Content-Type: application/json
     Payload
     {
            "app_instance_id": "xxxxxxxx",
            "events": [
                {
                 "name": "order_success",
                 "params": {
                      "value": "金额",
                      "currency": "货币单位"
                    }
                }
            ]
        }

注意:如果是事件价值的事件,currency和value是固定参数(这个千万不要更改),currency是货币单位,value是金额。

讲述到这里,关于Firebase Analytics埋点的前后端讲解就全部完成了,如果您还有任何问题,欢迎留言。

在多言一句,Firebase Analytics埋点的事件名称是有限制的,如果您的埋点Key名字不符合规范或者整体json数据不符合规范,将不能埋点成功。

发送事件的限制条件:
1)请求最多可以包含 25 个事件。
2)事件最多可以包含 25 个参数。
3)事件最多可以包含 25 个用户属性。
4)用户属性名称不得超过 24 个字符。
5)用户属性值不得超过 36 个字符。
6)事件名称不得超过 40 个字符,只能包含字母数字字符和下划线,并且必须以字母字符开头。
7)参数名称(包括项参数)不得超过 40 个字符,只能包含字母数字字符和下划线,并且必须以字母字符开头。
8)参数值(包括项参数值)不得超过 100 个字符。
9)项参数中最多可以包含 10 个自定义参数

github地址:
https://github.com/loveAndroidAndroid/Firebsse-Analytics-Demo

推荐阅读:
我的新书,《第一行代码 第3版》已出版!
借助 Android Studio 中的功耗性能分析器进行 A/B 测试
两台Android 设备同一个局域网下如何自由通信?

欢迎关注我的公众号
学习技术或投稿


长按上图,识别图中二维码即可关注
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存